Werken met statische bestanden in ASP.NET Core
Statische bestanden, zoals HTML, CSS, afbeeldingen en JavaScript, zijn assets die een ASP.NET Core app rechtstreeks aan clients kunnen serveren.
Bronnen
Working with static files in ASP.NET Core, 04/07/2017
Voorbeeld
- We gaan een html pagina toevoegen aan het aspdotnet project dat we in Een leeg ASP.NET Core project maken gemaakt hebben.
- We doen dat op Cloud9. Open je workspace op Cloud9.
- Maak een map met de naam images in de wwwoot map en sleep het logo van de Postcode App daarnaartoe.
- Maak in de map wwwroot een index.html bestand met daarin:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Postcode App</title> </head> <body> <h1>Postcode App</h1> <img src="images/postcode-logo.jpg" alt="Logo Postcode App"/> </body> </html>
- Vermits we op Cloud9 ontwikkelen moeten we ervoor zorgen dat de app op de juiste poort luistert:
namespace aspdotnet { public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .UseUrls("http://0.0.0.0:8080") .Build(); } }
- Om statische bestanden te kunnen serveren, moet je de middleware zo configureren dat statische bestanden aan de pipeline toegevoegd kunnen worden. De static file middleware kan worden geconfigureerd door het pakket
Microsoft.AspNetCore.StaticFiles
toe te voegen aan je project en vervolgens deUseStaticFiles
methode op te roepen in deStartup.Configure
methode:// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseStaticFiles(); app.Run(async (context) => { await context.Response.WriteAsync("Hello World!"); });}
- Ga naar de dotnetcore/aspdotnet map en run de app:
In de terminal:
- cd dotnetcore/aspdotnet
- dotnet run
- rechtermuisklik http://0.0.0.8080
- open
- Dat is het resultaat:
- De index.html pagina wordt niet geladen. Om die te laden type je achter de url /index.html:
- In ASP.NET Core is het mogelijk om aan te geven dat wanneer een url wordt opgegeven automatisch een default pagina wordt ingeladen. Standaard zijn dat:
- default.htm
- default.html
- index.htm
- index.html
app.UseDefaultFiles
toe aan deConfigure
methode. Zorg ervoor dat je die vóórapp.useStaticFiles
plaatst:// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.useDefaultFiles(); app.UseStaticFiles(); }
Run de app opnieuw, in de terminal:- dotnet run
- rechtermuisklik http://0.0.0.8080
- open
- Synchroniseer je Cloud9 workspace met je lokale computer:
- Op Cloud9:
- ga naar de root van je workspace: cd /home/ubuntu/workspace
- git status
- git add --all
- git commit -m "aspdotnet statische pagina toegevoegd op Cloud9"
- indien nodig: git remote add origin https://JosephInghelbrecht@bitbucket.org/JosephInghelbrecht/programmeren-3.git
- git pusch -u origin master
- Op je lokale computer:
- indien nodig: git remote add origin https://JosephInghelbrecht@bitbucket.org/JosephInghelbrecht/programmeren-3.git
- git pull origin master
- Op Cloud9:
2017-10-18 15:15:56